Performance analysis is used in software engineering to analyze the behavior of a program. This can be accomplished by running a test on program code, retrieving information provided by the code as the program executes, and determining if the code executes correctly or fails in execution at a particular point. In some performance analysis tools, the output to be analyzed is a stream of recorded events (a trace), or a statistical summary of the events observed (a profile). Using performance tests, the functionality of the program can be analyzed, understood, and optimized based on desired criteria, such as speed, processor usage, and/or memory usage. Such performance analysis tools are essential for understanding how programs perform so that they may be effectively improved.
One problem with existing performance analysis tools is the significant amount of effort required to determine the effect in performance of an introduced change in code. For example, performance tests on a software code project are typically made after a release of the code project and compared to a previous release, and such releases are commonly provided, at most, one or two times a year. By the time code performance has been tested, so many code changes have been introduced to the code that it becomes difficult to find the sources of performance changes introduced by the changes to the code. Furthermore, performance tests are manually performed as separate, independent tasks by a user, and thus require scheduling and attention to be performed regularly.
Accordingly, what is needed is the ability to automatically, promptly, and conveniently detect performance changes in program operation introduced by program code changes, and to notify users of significant performance changes in the code. The present invention addresses such a need.